package com.ibeeking.found.org.cp.rest.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ibeeking.found.common.entity.EmployeeDTO;
import com.ibeeking.found.common.entity.query.EmployeeFeignQuery;
import com.ibeeking.found.org.api.common.param.EmployeeFeignParam;
import com.ibeeking.found.org.service.common.bo.EmployeeBO;
import com.ibeeking.found.org.service.common.dos.EmployeeDO;
import com.ibeeking.found.org.service.common.param.EmployeeExtendFieldParam;
import com.ibeeking.found.org.service.common.param.EmployeeParam;
import com.ibeeking.found.org.service.common.param.QrCodeParam;
import com.ibeeking.found.org.service.common.query.EmployeePageQuery;
import com.ibeeking.found.org.service.common.query.EmployeeQuery;
import com.ibeeking.found.org.service.common.vo.EmployeeStatusVO;
import com.ibeeking.found.org.service.common.vo.EmployeeVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * IEmployeeService
 *
 * @Author ibeeking
 * @Date 2021-01-29 14:48
 */
public interface IEmployeeService {

    /***
     * 员工列表
     */
    List<EmployeeVO> list(EmployeeQuery query);

    /***
     * 员工Page列表
     */
    Page<EmployeeVO> pageList(EmployeePageQuery query);

    /***
     * 新增
     */
    Boolean add(EmployeeParam param);

    /***
     * 修改
     */
    Boolean modify(EmployeeParam param);

    /***
     * 新增/修改
     */
    Boolean feignAddorUpdate(EmployeeFeignParam param);

    /***
     * 修改
     */
    Boolean infoModify(EmployeeParam param);


    Boolean updateEmployeeById(EmployeeDO entityDO);

    /***
     * 通过id查询
     */
    EmployeeVO view(Long id);

    EmployeeBO selectById(Long id);

    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status);

    /***
     * 通过id删除
     */
    Boolean del(Long id);

    /***
     * 员工在职状态列表
     */
    List<EmployeeStatusVO> employeeStatusList();
    /***
     * 员工列表
     */
    List<EmployeeDTO> feignQueryEmployeeList(EmployeeFeignQuery query);

    void modifyAddr(Long employeeId, String provinceCode, String cityCode, String regionCode, String streetCode, String detailAddress);

    JSONObject queryEmployeeExtendField(Long employeeId);

    Boolean updateEmployeeExtendField(EmployeeExtendFieldParam param);

    void employeeQrCode(Long employeeId, HttpServletResponse response, QrCodeParam param);
}